/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controladores;

import JPAControllers.*;
import JPAControllers.exceptions.PreexistingEntityException;
import Persistencia.*;
import dominio.ComentarioVideoDomain;
import java.util.AbstractList;
import java.util.ArrayList;
import java.util.List;

public class ControladorComentarioVideo {
    ComentarioVideoDomain comentarioD;
    Comentariovideo comentario;
    Fisioterapeuta fisio;
    Sesion sesion;
    ControladorSesion controladorSesion;
    ControladorFisioterapeuta controladorFisio;
    ComentariovideoJpaController controlador;
    List<String> eliminarComentario;

    public String guardarComentario(){
        String res="";
        try {
            controlador = new ComentariovideoJpaController();
            setComentario();
            System.out.println("guardar comentario video "+comentario);
            controlador.create(comentario);
            res="Se agrego exitosamente el comentario del video correspondiente a la sesion: "+
                    comentario.getSesion().getIdSesion()+" del paciente "+comentario.getSesion().getPaciente().getNombre()+" "+comentario.getSesion().getPaciente().getApellido()+
                    " en la fecha: "+comentario.getFecha();
            return res;
        }catch(Exception ex){
            res="No se pudo agregar la sesion para el paciente: "+comentario.getFisioterapeuta().getNombre()+" "+comentario.getFisioterapeuta().getApellido();
            return res;
        }
    }

    public List<Comentariovideo> encontrarComentarios(){
        controlador = new ComentariovideoJpaController();
        List<Comentariovideo> sesTota=controlador.findComentariovideoEntities();
        return sesTota;
    }

    public void setComentario(){
        comentario=new Comentariovideo();
        controladorFisio= new ControladorFisioterapeuta();
        controladorSesion= new ControladorSesion();
        sesion=controladorSesion.encontrarSesion(comentarioD.getIdSesion());
        fisio=controladorFisio.encontrarFisioterapeuta(comentarioD.getIdFisioterapeuta());
        java.util.Date date = new java.util.Date();
        java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat("dd/MM/yyyy");
        String fecha = sdf.format(date);
        comentario.setFecha(fecha);
        comentario.setTexto(comentarioD.getTexto());
        comentario.setFisioterapeuta(fisio);
        comentario.setSesion(sesion);
    }

    public void setComentarioD(ComentarioVideoDomain in){
        comentarioD=in;
    }

    public List<Comentariovideo> encontrarMisComentarios(String idSesion, String idFisio) {
        controlador= new ComentariovideoJpaController();
        List<Comentariovideo> coments=encontrarComentarios();
        for(int i=0;i<coments.size();i++){
            if(coments.get(i).getSesion().getIdSesion()!=Integer.parseInt(idSesion)){
                coments.remove(i);
                i--;
            }
        }
        coments=ordenar(coments,idFisio);
        return coments;
    }

    public Comentariovideo encontrarComentario(String idSes) {
        Comentariovideo coment=null;
        List<Comentariovideo> listaTodosComent=encontrarComentarios();
        for(int i=0;i<listaTodosComent.size();i++){
            if(listaTodosComent.get(i).getSesion().getIdSesion().intValue()==Integer.parseInt(idSes)){
                coment=(listaTodosComent.get(i));
                break;
            }
        }
        return coment;
    }

    public void eliminarComentario(ComentarioVideoDomain c){
        try {
            controlador = new ComentariovideoJpaController();
            controlador.destroy(c.getIdComentario());
        }catch(Exception ex){}
    }

    public List<Comentariovideo> ordenar(List<Comentariovideo> coments, String idFisio) {
        List<Comentariovideo> comentsNew=new ArrayList<Comentariovideo>();
        eliminarComentario=new ArrayList<String>();
        for(int i=0;i<coments.size();i++){
            for(int j=0;j<coments.size();j++){
                if(comentsNew.isEmpty()||coments.get(i).getIdComentariovideo()>comentsNew.get(j).getIdComentariovideo()){
                    if(comentsNew.size()==10){
                        comentsNew.remove(9);
                        eliminarComentario.remove(9);
                    }
                    if(coments.get(i).getFisioterapeuta().getIdFisioterapeuta()==Integer.parseInt(idFisio)){
                        eliminarComentario.add(j, "Eliminar");
                    }else{
                        eliminarComentario.add(j, "");
                    }
                    comentsNew.add(j, coments.get(i));
                    break;
                }
            }
        }
        return comentsNew;
    }

    public List<String> getEliminarComentarios() {
        return eliminarComentario;
    }
}
